package com.regulareport.form.domain.excel;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.regulareport.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 导出
 * 
 * @author
 * @date 2025-10-08
 */
public class ReportVerificationResultExcel
{
    private static final long serialVersionUID = 1L;

    /** 报表编号 */
    @ExcelProperty("报表编号")
    private String reportFormNo;

    /** 报表名称 */
    @ExcelProperty("报表名称")
    private String reportFormName;

    /** 指标编号 */
    @ExcelProperty("指标编号")
    private String indexNo;

    /** 指标名称 */
    @ExcelProperty("指标名称")
    private String indexName;

    /** 校验公式 */
    @ColumnWidth(value = 30)
    @ExcelProperty("校验公式")
    private String verificationFormula;

    /** 校验类型（01表内，02表间，03提示性校验） */
    @ExcelProperty("校验类型")
    private String verificationType;

    /** 校验说明 */
    @ColumnWidth(value = 30)
    @ExcelProperty("校验说明")
    private String verificationDescribe;

    /** 机构编号 */
    @ExcelProperty("机构编号")
    private String deptNum;

    /** 机构名称 */
    @ExcelProperty("机构名称")
    private String deptName;

    /** 左边值 */
    @ExcelProperty("左边值")
    @NumberFormat("#, ##0.00")
    private BigDecimal leftValue;

    /** 右边值 */
    @ExcelProperty("右边值")
    @NumberFormat("#, ##0.00")
    private BigDecimal rightValue;

    /** 容差 */
    @ExcelProperty("容差")
    private String tolerance;

    /** 差值 */
    @ExcelProperty("差值")
    @NumberFormat("#, ##0.00")
    private BigDecimal differenceValue;

    /** 校验结果（01通过02不通过） */
    @ExcelIgnore
    private boolean verificationResult;

    @ExcelProperty("校验结果")
    private String verificationResultName;

    /** 数据日期 */
    @ExcelProperty("数据日期")
    @DateTimeFormat("yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date analysisDate;

    /**
     * 校验配置ID
     */
    @ExcelIgnore
    private Long verificationConfigID;

    @ExcelProperty("备注")
    private String remark;

    public void setReportFormNo(String reportFormNo) 
    {
        this.reportFormNo = reportFormNo;
    }

    public String getReportFormNo() 
    {
        return reportFormNo;
    }

    public void setReportFormName(String reportFormName) 
    {
        this.reportFormName = reportFormName;
    }

    public String getReportFormName() 
    {
        return reportFormName;
    }

    public void setIndexNo(String indexNo) 
    {
        this.indexNo = indexNo;
    }

    public String getIndexNo() 
    {
        return indexNo;
    }

    public void setIndexName(String indexName) 
    {
        this.indexName = indexName;
    }

    public String getIndexName() 
    {
        return indexName;
    }

    public void setVerificationFormula(String verificationFormula) 
    {
        this.verificationFormula = verificationFormula;
    }

    public String getVerificationFormula() 
    {
        return verificationFormula;
    }

    public String getVerificationType() {
        return verificationType;
    }

    public void setVerificationType(String verificationType) {
        this.verificationType = verificationType;
    }

    public void setVerificationDescribe(String verificationDescribe)
    {
        this.verificationDescribe = verificationDescribe;
    }

    public String getVerificationDescribe() 
    {
        return verificationDescribe;
    }

    public void setDeptNum(String deptNum)
    {
        this.deptNum = deptNum;
    }

    public String getDeptNum()
    {
        return deptNum;
    }

    public void setDeptName(String deptName)
    {
        this.deptName = deptName;
    }

    public String getDeptName() 
    {
        return deptName;
    }

    public void setTolerance(String tolerance) 
    {
        this.tolerance = tolerance;
    }

    public String getTolerance() 
    {
        return tolerance;
    }

    public boolean isVerificationResult() {
        return verificationResult;
    }

    public void setVerificationResult(boolean verificationResult) {
        this.verificationResult = verificationResult;
    }

    public void setAnalysisDate(Date analysisDate)
    {
        this.analysisDate = analysisDate;
    }

    public Date getAnalysisDate() 
    {
        return analysisDate;
    }

    public void setLeftValue(BigDecimal leftValue) {
        this.leftValue = leftValue;
    }

    public BigDecimal getLeftValue() {
        return leftValue;
    }

    public BigDecimal getRightValue() {
        return rightValue;
    }

    public void setRightValue(BigDecimal rightValue) {
        this.rightValue = rightValue;
    }

    public BigDecimal getDifferenceValue() {
        return differenceValue;
    }

    public void setDifferenceValue(BigDecimal differenceValue) {
        this.differenceValue = differenceValue;
    }

    public Long getVerificationConfigID() {
        return verificationConfigID;
    }

    public void setVerificationConfigID(Long verificationConfigID) {
        this.verificationConfigID = verificationConfigID;
    }

    public String getVerificationResultName() {
        return verificationResultName;
    }

    public void setVerificationResultName(String verificationResultName) {
        this.verificationResultName = verificationResultName;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("reportFormNo", getReportFormNo())
            .append("reportFormName", getReportFormName())
            .append("indexNo", getIndexNo())
            .append("indexName", getIndexName())
            .append("verificationConfigID", getVerificationConfigID())
            .append("verificationFormula", getVerificationFormula())
            .append("verificationType", getVerificationType())
            .append("verificationDescribe", getVerificationDescribe())
            .append("deptNum", getDeptNum())
            .append("deptName", getDeptName())
            .append("leftValue", getLeftValue())
            .append("rightValue", getRightValue())
            .append("tolerance", getTolerance())
            .append("verificationResult", isVerificationResult())
            .append("analysisDate", getAnalysisDate())
            .toString();
    }
}
